<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;
use think\Db;
use app\admin\model\UserModel;
use app\admin\model\RoleModel;

class User extends AdminController
{
    /**
     * 显示用户列表页
     *
     * @return \think\Response
     */
    public function index()
    {

        // 查询状态为1的用户数据 并且每页显示10条数据
        //$data = Db::name('user')->paginate(8);
        $data = Db::name('user')->select();
        $arr = array(); //声明一个空数组
        //dump($data);die;
        //遍历用户信息
        foreach($data as $v){
            //查询用户有的角色id
            $role_ids = Db::name('user_role')->where('user_id',$v['id'])->field('role_id')->select();
            //dump($role_ids);
            //定义空数组
            $roles = array();
            //遍历角色
            foreach($role_ids as $value){
                //dump($value['role_id']);
                $roles[] = Db::name('role')->where('id',$value['role_id'])->find();
                //dump($roles);
            }
            //将新得到角色信息放置到$v中
            $v['role'] = $roles;
            $arr[] = $v;
        }

        //dump($arr[0]['role'][0]['rolename']);die;
        // 把分页数据赋值给模板变量list
        $this->assign('data', $arr);
        // 渲染模板输出
        return $this->fetch();
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        $role = Db::name('role')->select();
        $this->assign('role',$role);
        return view('user/add');
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        $info = $request->post();
        //dump($info);die;
        //过滤数据
        $data = [
            "username" => $info['username'],
            "pass" => md5($info['pass']),
            "logintime"=>time(),
            "loginip"=>$_SERVER['REMOTE_ADDR'],
            "status"=>$info['status']
        ];
        //dump($data);
        //添加用户并返回自增ID
       $uid = Db::name('user')->insertGetId($data);
       //dump($uid);die;
        //重定向页面
        if ($uid) {
            //添加用户成功后 再添加到用户角色表
            $role = [
              "user_id"=>$uid,
                "role_id"=>$info['role_id']
            ];
            Db::name('user_role')->insert($role);
            return $this->success('添加成功', url('admin/user/index'));
        } else {
            return $this->error('添加失败');
        }
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //echo $id;
        $data = Db::name('user')->find($id);
        $role = Db::name('role')->select();
        $this->assign('role',$role);
        $this->assign('data',$data);
        return view('user/edit');
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        $info = $request->put();

        //过滤数据
        $data = [
            "username" => $info['username'],
            "pass" => md5($info['pass']),
            "logintime"=>time(),
            "loginip"=>$_SERVER['REMOTE_ADDR'],
            "status"=>$info['status']
        ];

        $result = Db::name('user')->where('id', $id)->update($data);
        if ($result) {
            return $this->success('修改成功', url('admin/user/index'));
        } else {
            return $this->error('修改失败');
        }
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //删除用户
        $result = Db::name('user')->delete($id);
        //删除用户角色表中记录
        Db::name('user_role')->where('user_id',$id)->delete();

        //判断数据删除是否成功
        if ($result) {
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = 'ID为:' . $id . '的用户删除成功';
        } else {
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = 'ID为:' . $id . '的用户删除失败,请重试!';
        }
        return json($info);
    }
    /**
     * 加载角色表单
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function getRole($id)
    {
        //获取角色
        $data = Db::name('role')->select();
        //查询用户已有的角色
        $role_ids = Db::name('user_role')->where('user_id',$id)->field('role_id')->select();
        $rid = array();
        foreach($role_ids as $val){
            $rid[] = $val['role_id'];
        }

        //dump($rid);die;
        $this->assign('rid',$rid);
        $this->assign('data',$data);
        $this->assign('user_id',$id);
        return view('user/role');
    }
    /**
     * 设置角色
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function setRole(Request $request, $id)
    {
        //获取角色
        $info = $request->post();
        $role_id = $info['role_id'];

        //清空原来的数据

        Db::name('user_role')->where('user_id',$id)->delete();
        //保存到用户角色表中
        foreach($role_id as $val){
            Db::name('user_role')->insert(['user_id'=>$id, 'role_id'=>$val]);
        }
        return $this->success('角色配置成功',url('admin/user/index'));
    }
}
